• Previous post
  • Next post
  • Back to top
  • Share post

在 Ubuntu 中固定 USB 设备的串口号

问题背景

在 Ubuntu 系统中,USB 串口设备的设备名(如 ttyUSB0ttyUSB1)可能会在每次插拔或重启后发生变化,这给需要固定串口号的应用程序带来不便。通过创建 udev 规则,可以根据 USB 设备的 Vendor ID 和 Product ID 来固定串口号。


步骤一:获取设备信息

1. 查看 USB 设备列表

1
lsusb

记录设备的 Vendor ID 和 Product ID(例如:ID 0403:6001

2. 获取详细属性

1
udevadm info -a /dev/ttyUSBX

替换 X 为实际设备号。结果一般如下。


步骤二:创建 udev 规则文件

1
sudo gedit /etc/udev/rules.d/usb-serial.rules

其中 usb-serial.rules 文件名可以自定义。


步骤三:编写规则模板

示例规则

1
2
3
4
5
# 设备 1 规则(示例:绑定到 ttyUSB_CAMERA)
KERNEL=="ttyUSB*", SUBSYSTEMS=="usb", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001", MODE="0666", SYMLINK+="ttyUSB_CAMERA"

# 设备 2 规则(示例:绑定到 ttyUSB_SENSOR)
KERNEL=="ttyUSB*", SUBSYSTEMS=="usb", ATTRS{idVendor}=="10c4", ATTRS{idProduct}=="ea60", MODE="0666", SYMLINK+="ttyUSB_SENSOR"

规则说明

  • SUBSYSTEMS=="usb" 也是一个过滤条件。
  • KERNEL=="ttyUSB*" 是正确的,表示无论是 ttyUSB*,符合后续芯片型号的就可以被指向 SYMLINK+="ttyUSB_SENSOR"
  • 但是如果给定了 ttyUSB10,那就只有满足上述条件才能通过 ttyUSB_SENSOR 找到。

步骤四:生效规则

1. 重新加载规则

1
2
sudo udevadm control --reload-rules
sudo udevadm trigger

2. 查看设备名称更改状况

1
ls -l /dev | grep ttyUSB

参考资料

上述是通过识别目标 usb 设备芯片以及相关信息来固定串口,或者也可以通过 pc 端固定物理串口。



原文链接

本文原载于 CSDN:在 Ubuntu 中固定 USB 设备的串口号

最后更新:2026 年 3 月